package com.yzy.fly.loader;

import com.yzy.fly.mapper.FlyModelMapper;
import com.yzy.fly.mapper.FlyTableColumnMapper;
import com.yzy.fly.mapper.FlyTableMapper;
import com.yzy.fly.kernel.model.DataIncrement;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

/**
 * 模型加载器
 */
@Component
public class DataIncrementLoader {
    @Autowired
    private FlyModelMapper flyModelMapper;
    @Autowired
    private FlyTableMapper flyTableMapper;
    @Autowired
    private FlyTableColumnMapper flyTableColumnMapper;

//    public FlyTable loader(int tableId) {
//        return loaderTableId(tableId);
//    }

//    public FlyTable loaderTableId(int tableId) {
//        FlyTable flyTable = flyTableMapper.selectById(tableId);
//        return loader(flyTable);
//    }
//    public FlyTable loaderByModelId(int modelId) {
//        FlyTable flyTable = flyTableMapper.selectByModelId(modelId);
//        return loader(flyTable);
//    }

    public void loader(List<DataIncrement> originList,List<DataIncrement> newList) {
//        List<DataIncrement> originList = new ArrayList<>();
//        List<DataIncrement> newList = new ArrayList<>();
        List<DataIncrement> originSameList = new ArrayList<>();
        List<DataIncrement> newSameList = new ArrayList<>();
        if (CollectionUtils.isNotEmpty(originList)) {
            for (int j = 0; j < originList.size(); j++) {
                DataIncrement originData = originList.get(j);
//                int id = data.getId().intValue();
                for (int k = 0; k < newList.size(); k++) {
                    DataIncrement newData = newList.get(k);
                    if (originData.idSame(newData)) {
                        originSameList.add(originData);
                        newSameList.add(newData);
                        break;
                    }
                }
            }
        }

        originList.removeAll(originSameList); // 要删除的数据
        newList.removeAll(newSameList); // 要增加的数据

        if (CollectionUtils.isNotEmpty(newList)) {
            //全部新增
            for (int j = 0; j < newList.size(); j++) {
                DataIncrement dataIncrement = newList.get(j);
                dataIncrement.insert();
            }
        }
//
//        if (CollectionUtils.isNotEmpty(originList)) {
//            for (int j = 0; j < originList.size(); j++) {
//                ParagraphEntity paragraphEntity = originList.get(j);
//                paragraphMapper.deleteById(paragraphEntity.getId());
//            }
//        }
//
//        //update
//        if (CollectionUtils.isNotEmpty(dWidgetTextSameList)) {
//            for (int j = 0; j < dWidgetTextSameList.size(); j++) {
//                DWidgetText dWidgetText = dWidgetTextSameList.get(j);
//                for (int k = 0; k < paragraphSameList.size(); k++) {
//                    ParagraphEntity paragraphEntity = paragraphSameList.get(k);
//                    int id = paragraphEntity.getId().intValue();
//                    if (dWidgetText.getUId().intValue() == id) {
//                        paragraphEntity.setPageId(pageEntity.getId());
//                        paragraphEntity.setBasicId(pageEntity.getBasicId());
//                        DWidgetTextToParagraph.covert(dWidgetText,paragraphEntity);
//                        paragraphEntity.setUpdateTime(new Date());
//                        paragraphMapper.updateById(paragraphEntity);
//                        break;
//                    }
//                }
//            }
//        }

//        return null;
    }
}
